#ifndef _EQTEST_WINDOW_H
#define _EQTEST_WINDOW_H

#include <memory>

#include <eq/window.h>

#include "gl_texture.h"
#include "gl_triangle_mesh.h"
#include "shaderprogram.h"

namespace eqtest
{
    class Window : public eq::Window
    {
        public:
            Window(eq::Pipe* parent);
            
            virtual bool configInitGL(const eq::uint128_t& initID);
            virtual bool configExitGL();
            
            GLTriangleMesh const& getMesh() { return *mesh; }
            
            GLTexture const& getAlbedo  () const { return *texAlbedo; }
            GLTexture const& getNormal  () const { return *texNormal; }
            GLTexture const& getSpecular() const { return *texSpecular; }
            GLTexture const& getStretch () const { return *texStretch; }
            GLTexture const& getRho_d   () const { return *texRho_d; }
            
            ShaderProgram& getShader() const { return *shader; }
            
        private:
            std::unique_ptr<GLTriangleMesh> mesh;
            std::unique_ptr<GLImageTexture> texAlbedo, texNormal, texSpecular, texStretch, texRho_d;
            std::unique_ptr<ShaderProgram>  shader;
    };
}

#endif
